<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 0.1+0.2==0.3是否为true?为什么?该如何使得结果为true。

      if (0.1 + 0.2 == 0.3) {
        console.log("该结论正确");
      } else {
        console.log("结论错误");
      }
      //所以0.1+0.2==0.3为false
      console.log(0.1 + 0.2); // 输出结果是 0.30000000000000004，而不是精确的 0.3
      console.log(0.1 + 0.2 == 0.3); // 输出结果是 false

      // 浮点数的精度问题可能会导致 0.1 + 0.2 不等于 0.3，而是一个非常接近 0.3 的值。这是因为计算机内部使用二进制表示浮点数，而十进制小数（如 0.1 和 0.2）在二进制中无法精确表示，因此会存在精度损失。

      // 解决方法
      function areEqual(num1, num2) {
        return Math.abs(num1 * 10 + num2 * 10) / 10 === 0.3;
      }

      console.log(areEqual(0.1, 0.2)); // 输出 true
    </script>
  </body>
</html>
